Changing encryption keys after a certain usage time is an old concept. For example, in the initial key distribution process, an entire table of encryption keys is distributed. Thereafter, each key is used for a specific time only. Alternatively, a new key can be derived for each session by using mathematical one-way functions such as is done in the Diffie-Hellman algorithm. Finally, with a distributed master key and a series of modifier elements such as a date or time stamp or a counter or the like, one can combine the master key with the modifier elements to generate session keys as needed.
Each of the aforementioned techniques for session key generation suffers from a variety of factors which detract from the appeal of the technique. The first technique requires a fairly large protected memory to store the table of keys. In addition, it requires a significant amount of physical security to keep it from being compromised. The second technique using one-way functions requires powerful processors to compute functions such as discrete logarithms. It also requires a validation of each new key which is generated for the particular session to defy the so-called "person in the middle" attack. The third technique is the most advantageous of the three mentioned. However, if the requirement of unique session keys is imposed, it then becomes necessary for the modifier elements to have a sufficiently long length that maintains an acceptably low probability of repetition. Where data and/or time stamps are used, there are potential security and operational problems arising from clock alignment problems or in allowing communication across different time zones.